home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / bits / mman.h < prev    next >
C/C++ Source or Header  |  2009-10-07  |  4KB  |  106 lines

  1. /* Definitions for POSIX memory map interface.  Linux/x86_64 version.
  2.    Copyright (C) 2001, 2003, 2005, 2006 Free Software Foundation, Inc.
  3.    This file is part of the GNU C Library.
  4.  
  5.    The GNU C Library is free software; you can redistribute it and/or
  6.    modify it under the terms of the GNU Lesser General Public
  7.    License as published by the Free Software Foundation; either
  8.    version 2.1 of the License, or (at your option) any later version.
  9.  
  10.    The GNU C Library is distributed in the hope that it will be useful,
  11.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  13.    Lesser General Public License for more details.
  14.  
  15.    You should have received a copy of the GNU Lesser General Public
  16.    License along with the GNU C Library; if not, write to the Free
  17.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  18.    02111-1307 USA.  */
  19.  
  20. #ifndef _SYS_MMAN_H
  21. # error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
  22. #endif
  23.  
  24. /* The following definitions basically come from the kernel headers.
  25.    But the kernel header is not namespace clean.  */
  26.  
  27.  
  28. /* Protections are chosen from these bits, OR'd together.  The
  29.    implementation does not necessarily support PROT_EXEC or PROT_WRITE
  30.    without PROT_READ.  The only guarantees are that no writing will be
  31.    allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
  32.  
  33. #define PROT_READ    0x1        /* Page can be read.  */
  34. #define PROT_WRITE    0x2        /* Page can be written.  */
  35. #define PROT_EXEC    0x4        /* Page can be executed.  */
  36. #define PROT_NONE    0x0        /* Page can not be accessed.  */
  37. #define PROT_GROWSDOWN    0x01000000    /* Extend change to start of
  38.                        growsdown vma (mprotect only).  */
  39. #define PROT_GROWSUP    0x02000000    /* Extend change to start of
  40.                        growsup vma (mprotect only).  */
  41.  
  42. /* Sharing types (must choose one and only one of these).  */
  43. #define MAP_SHARED    0x01        /* Share changes.  */
  44. #define MAP_PRIVATE    0x02        /* Changes are private.  */
  45. #ifdef __USE_MISC
  46. # define MAP_TYPE    0x0f        /* Mask for type of mapping.  */
  47. #endif
  48.  
  49. /* Other flags.  */
  50. #define MAP_FIXED    0x10        /* Interpret addr exactly.  */
  51. #ifdef __USE_MISC
  52. # define MAP_FILE    0
  53. # define MAP_ANONYMOUS    0x20        /* Don't use a file.  */
  54. # define MAP_ANON    MAP_ANONYMOUS
  55. # define MAP_32BIT    0x40        /* Only give out 32-bit addresses.  */
  56. #endif
  57.  
  58. /* These are Linux-specific.  */
  59. #ifdef __USE_MISC
  60. # define MAP_GROWSDOWN    0x00100        /* Stack-like segment.  */
  61. # define MAP_DENYWRITE    0x00800        /* ETXTBSY */
  62. # define MAP_EXECUTABLE    0x01000        /* Mark it as an executable.  */
  63. # define MAP_LOCKED    0x02000        /* Lock the mapping.  */
  64. # define MAP_NORESERVE    0x04000        /* Don't check for reservations.  */
  65. # define MAP_POPULATE    0x08000        /* Populate (prefault) pagetables.  */
  66. # define MAP_NONBLOCK    0x10000        /* Do not block on IO.  */
  67. # define MAP_STACK    0x20000        /* Allocation is for a stack.  */
  68. #endif
  69.  
  70. /* Flags to `msync'.  */
  71. #define MS_ASYNC    1        /* Sync memory asynchronously.  */
  72. #define MS_SYNC        4        /* Synchronous memory sync.  */
  73. #define MS_INVALIDATE    2        /* Invalidate the caches.  */
  74.  
  75. /* Flags for `mlockall'.  */
  76. #define MCL_CURRENT    1        /* Lock all currently mapped pages.  */
  77. #define MCL_FUTURE    2        /* Lock all additions to address
  78.                        space.  */
  79.  
  80. /* Flags for `mremap'.  */
  81. #ifdef __USE_GNU
  82. # define MREMAP_MAYMOVE    1
  83. # define MREMAP_FIXED    2
  84. #endif
  85.  
  86. /* Advice to `madvise'.  */
  87. #ifdef __USE_BSD
  88. # define MADV_NORMAL     0    /* No further special treatment.  */
  89. # define MADV_RANDOM     1    /* Expect random page references.  */
  90. # define MADV_SEQUENTIAL 2    /* Expect sequential page references.  */
  91. # define MADV_WILLNEED     3    /* Will need these pages.  */
  92. # define MADV_DONTNEED     4    /* Don't need these pages.  */
  93. # define MADV_REMOVE     9    /* Remove these pages and resources.  */
  94. # define MADV_DONTFORK     10    /* Do not inherit across fork.  */
  95. # define MADV_DOFORK     11    /* Do inherit across fork.  */
  96. #endif
  97.  
  98. /* The POSIX people had to invent similar names for the same things.  */
  99. #ifdef __USE_XOPEN2K
  100. # define POSIX_MADV_NORMAL    0 /* No further special treatment.  */
  101. # define POSIX_MADV_RANDOM    1 /* Expect random page references.  */
  102. # define POSIX_MADV_SEQUENTIAL    2 /* Expect sequential page references.  */
  103. # define POSIX_MADV_WILLNEED    3 /* Will need these pages.  */
  104. # define POSIX_MADV_DONTNEED    4 /* Don't need these pages.  */
  105. #endif
  106.